package cn.iocoder.yudao.module.ad.effect.service;

import cn.iocoder.yudao.framework.business.basic.service.PageService;
import cn.iocoder.yudao.framework.business.basic.service.SimpleDetailService;
import cn.iocoder.yudao.module.ad.effect.vo.AppAdEffectRecordQueryDTO;
import cn.iocoder.yudao.module.ad.effect.vo.AppAdEffectRecordVO;
import cn.iocoder.yudao.module.api.ad.effect.enums.AdEffectSceneEnum;
import cn.iocoder.yudao.module.api.ad.effect.enums.AdEffectTypeEnum;

import java.util.Set;

/**
 * 广告效果记录 Service 接口
 *
 * @author 山野羡民
 *
 */
public interface AppAdEffectRecordService extends SimpleDetailService<AppAdEffectRecordVO>, PageService<AppAdEffectRecordVO, AppAdEffectRecordQueryDTO> {

    /**
     * 创建广告效果记录
     *
     * @param userId 用户编号
     * @param scene 广告效果场景
     * @param type 广告效果类型
     * @param planId 广告投放计划编号
     * @param duration 广告时长
     * @param spendPrice 计费金额
     *
     * @return 广告效果记录编号，未创建成功者返回{@code null}
     */
    Long createIfNecessary(Long userId, AdEffectSceneEnum scene, AdEffectTypeEnum type, Long planId, Integer duration, Integer spendPrice);

    /**
     * 获取今日已完成的广告投放计划编号集合
     *
     * @param userId 用户编号
     * @return 广告投放计划编号集合
     */
    Set<Long> getTodayCompletePlanIds(Long userId);

}
